import SearchFormManager from "../../components/business/search-form/search-form-manager.ts"
import ProgramFormManager from "../../components/business/program-form/program-form-manager.ts"
import TableManager from "../../components/business/table-form/table-manager.ts"
import DialogSheetFormManager from "../../pages/dialog-sheet-form/dialog-sheet-form-manager.ts"
import baseType from "../../model/base/base-type.ts"
import {extendButton} from "./type.ts"
import SideSheetFormManager from "@/framework/pages/side-sheet-form/side-sheet-form-manager.ts";
import TabsFormManager from "./components/table-tabs-form/tabs-form-manager.ts";

/**
 * 表单框
 */
class PageModelManager<Model> {
    /**
     * 请求地址
     */
    url: string
    /**
     * 初始化时刷新
     */
    getImmediate?: baseType.bool
    /**
     * 获取返回的请求数据
     */
    getProcessData?: Function
    /**
     * 渲染表格前设置数据源
     */
    getDataBack?: Function
    /**
     * get请求地址
     */
    getUrl?: string
    /**
     * post请求地址
     */
    postUrl?: string
    /**
     * put请求地址
     */
    putUrl?: string
    /**
     * delete请求地址
     */
    deleteUrl?: string
    /**
     * 额外功能
     */
    extendButton?: extendButton
    /**
     * 初始自定义方法
     */
    plugins?: Function[]
    /**
     * 自定义参数
     */
    otherParams?: Partial<Model>
    /**
     * tab栏组件模型
     */
    tabsForm?: TabsFormManager
    /**
     * 搜索组件模型
     */
    searchForm?: SearchFormManager<Model>
    /**
     * 功能组件模型
     */
    programForm?: ProgramFormManager
    /**
     * 表格组件模型
     */
    table: TableManager<Model>
    /**
     * 表单组件模型
     */
    form?: DialogSheetFormManager<Model>
    /**
     * 侧拉栏模型
     */
    sideForm?: SideSheetFormManager<Model>

    /**
     * 构造函数
     */
    constructor(url: string, getImmediate: baseType.bool, table: TableManager<Model>) {
        this.url = url
        this.getImmediate = getImmediate
        this.table = table
    }
}

/**
 * 暴露
 */
export default PageModelManager


